'''
给定一个非负整数数组，假定你的初始位置为数组第一个下标。
数组中的每个元素代表你在那个位置能够跳跃的最大长度。
你的目标是到达最后一个下标，并且使用最少的跳跃次数。
例如：
A = [2,3,1,1,4]A=[2,3,1,1,4]，到达最后一个下标的最少跳跃次数为 22。（先跳跃 11 步，从下标 00 到 11，然后跳跃 33 步，到达最后一个下标。一共两次）
输入格式
第一行输入一个正整数 n(1 \le n \le 100)n(1≤n≤100) ，接下来的一行，输入 nn 个整数，表示数组 AA。
输出格式
最后输出最少的跳跃次数。
样例输入
5
3 1 1 1 1
样例输出
2
'''

inf=0xfffff
n=int(raw_input())
a=map(int,raw_input().strip().split())
v=[inf]*n
v[0]=0
for i in xrange(0,n):
    for j in xrange(1,a[i]+1):
        if i+j>=n:
            break
        if v[i+j]>v[i]+1:
            v[i+j]=v[i]+1
#print v
print v[-1]